博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用antd UI 制作菜单
阅读量:5057 次
发布时间:2019-06-12

本文共 4421 字,大约阅读时间需要 14 分钟。

antd 主页地址:https://ant.design/docs/react/introduce

在使用过程中,不能照搬antd的组件代码,因为有些并不合适。首先,菜单并没有做跳转功能,仅仅是菜单,需要在它的基础方法中添加我们的业务代码。

/*菜单组件,所有的方法都要bind this*/import React,{Component} from 'react';import {render} from 'react-dom';import {Link,browserHistory} from 'react-router';import Menu from 'antd/lib/menu';import Icon from 'antd/lib/icon';const SubMenu = Menu.SubMenu;const MenuItemGroup = Menu.ItemGroup;import {user_search_path,        application_search_path,navigation_search,advertising_search} from 'config';export default class Sidebar extends Component{    constructor(props){        super(props);        this.state = {            current: '1',            openKeys: []        }    }    handleClick(e) {       /*这里要做判断,判断是点击哪个菜单,就跳转到相应的菜单内容,使用router进行跳转*/        if(e.key == "1"){            browserHistory.push(user_search_path);        }else if(e.key == '2'){            browserHistory.push(application_search_path);        }else if(e.key == '3'){            browserHistory.push(navigation_search);        }else if(e.key == '4'){            browserHistory.push(advertising_search);        }        this.setState({            current: e.key,            openKeys: e.keyPath.slice(1)        });    }    onToggle(info) {        console.log('onToggle', info);        this.setState({            openKeys: info.open ? info.keyPath : info.keyPath.slice(1)        });    }    getKeyPath(key) {        const map = {            sub1: ['sub1'],            sub2: ['sub2'],            sub3: ['sub2', 'sub3'],            sub4: ['sub4'],        };        return map[key] || [];    }    render(){        return(            
用户服务}>
设置权限
配置服务}>
app版本查询
导航配置查询
广告配置查询
app changeLog
短信服务}>
); }}

第二步,通过页面加载组件Parent.js,固定菜单与菜单内容的位置

import React,{Component} from 'react';import {render} from 'react-dom';import Icon from 'antd/lib/icon';import jiChu from '../../../build/images/jichu.png';import HeaderRight from '../login/HeaderRight.js';import SearchUser from '../login/SearchUser.js';import Sidebar from '../sidebar/Sidebar.js';import style from '../../../build/css/login.css';export default class Parent extends Component{    constructor(props){        super(props);    }    render(){        const headerUserPanel = (
); const search = (
); const sidebars = (
); /*菜单组件*/ return(
{sidebars}
收缩菜单
{headerUserPanel}
{this.props.children} /*菜单组件对应内容*/
); }}

最后一步,在路由中通过path将页面与路径关联,这样我们在菜单组件中的跳转就是通过这一步控制

import React from 'react';import {render} from 'react-dom';import { Router , Redirect, Route , IndexRoute , browserHistory } from 'react-router';import { Provider } from 'react-redux'const store = configureStore();render((    
), document.getElementById('root'));

完毕!

 

转载于:https://www.cnblogs.com/baiyygynui/p/5948060.html

你可能感兴趣的文章
F# 编程 借助 F# 构建 MVVM 应用程序
查看>>
ACFUN切换代码自用。。。
查看>>
网卡流量检测.py
查看>>
【转】Android的权限permission
查看>>
go语言从零学起(一) -- 文档教程篇
查看>>
web自动化框架抽取示例【Java+selenium】
查看>>
django-session与分页
查看>>
水电费了
查看>>
H5图像遮罩-遁地龙卷风
查看>>
android 中 unable to start service 错误解决方法
查看>>
cgi+perl+ajax初探
查看>>
关于viewport
查看>>
C# 抓取页面table数据并分析到数据库
查看>>
Linux让应用只在特定桌面环境下自动启动
查看>>
在Codeplex发布ClickOnce应用程序
查看>>
ajax
查看>>
poj1981 Circle and Points 单位圆覆盖问题
查看>>
POP的Stroke动画
查看>>
线程同步机制初识 【转载】
查看>>
屏蔽各类弹窗广告(WPS、智能云输入法)
查看>>